// 导入Shopify API相关模块
import { BillingInterval, LATEST_API_VERSION } from "@shopify/shopify-api";
import { shopifyApp } from "@shopify/shopify-app-express";
import { SQLiteSessionStorage } from "@shopify/shopify-app-session-storage-sqlite";
import { restResources } from "@shopify/shopify-api/rest/admin/2024-10";

// 数据库文件路径，用于存储会话数据
const DB_PATH = `${process.cwd()}/database.sqlite`;

// 除非NODE_ENV为production，否则与Shopify的交易将始终标记为测试交易
// 查看ensureBilling帮助程序以了解有关此模板中计费的更多信息
const billingConfig = {
  "My Shopify One-Time Charge": {
    // 这是一个示例配置，会进行一次性收费5美元（目前仅支持USD）
    amount: 5.0,
    currencyCode: "USD",
    interval: BillingInterval.OneTime,
  },
};

// 创建Shopify应用实例，配置所有必要的参数
const shopify = shopifyApp({
  api: {
    // Shopify应用的API密钥（Client ID）
    apiKey: process.env.SHOPIFY_API_KEY || '92d1ae7d0a8c948327c7795b27a2518a',
    // Shopify应用的API密钥（Client Secret）
    apiSecretKey: process.env.SHOPIFY_API_SECRET || 'dc79705efdfc71c3b1ecb0a997b922d8',
    // OAuth权限范围
    scopes: process.env.SHOPIFY_SCOPES || 'read_orders,write_orders,read_products,write_products,read_themes,write_themes',
    // 应用主机地址
    hostName: process.env.HOST || '464f65ee4326.ngrok-free.app',
    // 使用指定的API版本
    apiVersion: process.env.SHOPIFY_API_VERSION || '2024-10',
    // REST API资源定义
    restResources,
    // 未来特性配置
    future: {
      customerAddressDefaultFix: true,        // 客户地址默认修复
      lineItemBilling: true,                  // 行项目计费
      unstable_managedPricingSupport: true,   // 托管定价支持（不稳定）
    },
    // 计费配置（设置为undefined禁用，或替换为上面的billingConfig启用示例计费）
    billing: undefined,
  },
  auth: {
    // OAuth认证路径
    path: "/api/auth",
    // OAuth回调路径 - 对应您配置的回调地址
    callbackPath: "/api/auth/callback",
  },
  webhooks: {
    // Webhook处理路径
    path: "/api/webhooks",
    // Webhook签名验证密钥（如果配置了的话）
    ...(process.env.SHOPIFY_WEBHOOK_SECRET && {
      secret: process.env.SHOPIFY_WEBHOOK_SECRET
    }),
  },
  // 会话存储策略（应该替换为您首选的存储策略）
  sessionStorage: new SQLiteSessionStorage(DB_PATH),
});

// 导出配置好的Shopify应用实例
export default shopify;
